import { useState, useEffect } from 'react';

// 定义一个用于处理 localStorage 的自定义 Hook
function useLocalStorage<T>(key: string, initialValue: T): [T, (value: T) => void] {
    // 获取 localStorage 中的初始值，如果没有则使用提供的 initialValue
    const [storedValue, setStoredValue] = useState<T>(() => {
        try {
            const item = window.localStorage.getItem(key);
            return item ? JSON.parse(item) : initialValue;
        } catch (error) {
            console.error("Error reading from localStorage", error);
            return initialValue;
        }
    });

    // 设置 localStorage 的值
    const setValue = (value: T) => {
        try {
            setStoredValue(value);
            window.localStorage.setItem(key, JSON.stringify(value));
        } catch (error) {
            console.error("Error writing to localStorage", error);
        }
    };

    return [storedValue, setValue];
}

export default useLocalStorage;
